Bug 552956 – Should check composite extension version
authorMatthias Clasen <mclasen@redhat.com>
Sat, 27 Sep 2008 03:43:50 +0000 (03:43 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 27 Sep 2008 03:43:50 +0000 (03:43 +0000)
2008-09-26  Matthias Clasen  <mclasen@redhat.com>

        Bug 552956 – Should check composite extension version

        * gdk/x11/gdkdisplay-x11.c: Check that the version of the
        composite extension is at least 0.4.
        Patch by Owen Taylor

svn path=/trunk/; revision=21530

ChangeLog
gdk/x11/gdkdisplay-x11.c

index f7b179f19d5f6f9507f444cb99aa7ff945cb0d7f..a84cb04cbbd8b551aac775996e502c6c2b77b34c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-09-26  Matthias Clasen  <mclasen@redhat.com>
+
+       Bug 552956 – Should check composite extension version
+
+       * gdk/x11/gdkdisplay-x11.c: Check that the version of the
+       composite extension is at least 0.4.
+       Patch by Owen Taylor
+
 2008-09-26  Matthias Clasen  <mclasen@redhat.com>
        
        Bug 553803 – eventually call XCloseDevice on XOpenDevice results
index d791975155d3947d4de0b2c9a92833b95934dc5c..e48c16cb418908c74f094ec75c41841fe47addb9 100644 (file)
@@ -236,7 +236,17 @@ gdk_display_open (const gchar *display_name)
 #ifdef HAVE_XCOMPOSITE
   if (XCompositeQueryExtension (display_x11->xdisplay,
                                &ignore, &ignore))
-      display_x11->have_xcomposite = TRUE;
+    {
+      int major, minor;
+
+      XCompositeQueryVersion (display_x11->xdisplay, &major, &minor);
+
+      /* Prior to Composite version 0.4, composited windows clipped their
+       * parents, so you had to use IncludeInferiors to draw to the parent
+       * This isn't useful for our purposes, so require 0.4
+       */
+      display_x11->have_xcomposite = major > 0 || (major == 0 && minor >= 4);
+    }
   else
 #endif
     display_x11->have_xcomposite = FALSE;